local 副本_黑风山 = class()

function 副本_黑风山:初始化()
end

function 副本_黑风山:取任务说明(玩家id, 任务id)
	local NPC = ""

	if 任务数据[任务id].类型 == 34480 then
		local 副本id = 任务数据[任务id].副本id

		if 副本数据.黑风山.进行[副本id] == nil then
			说明 = {
				"黑风山",
				"#您的副本已经结束"
			}
		else
			local 进程 = 副本数据.黑风山.进行[副本id].进程

			if 进程 == 1 then
				local NPC1 = 取NPC自动寻路数据("玄奘", 34480)
				local NPC2 = 取NPC自动寻路数据("镇山太保刘伯钦", 34480)
				local NPC3 = 取NPC自动寻路数据("婆婆", 34480)
				local 完成情况 = {
					"#R(未完成)#",
					"#R(未完成)#",
					"#R(未完成)#"
				}

				if 任务数据[任务id].协助任务.玄奘 <= 0 then
					完成情况[1] = "#G(已完成)#"
				end

				if 任务数据[任务id].协助任务.镇山太保 <= 0 then
					完成情况[2] = "#G(已完成)#"
				end

				if 任务数据[任务id].协助任务.婆婆 <= 0 then
					完成情况[3] = "#G(已完成)#"
				end

				任务数据[任务id].坐标 = {
					X = 44,
					Y = 21
				}
				说明 = {
					"黑风山",
					format("#分别帮助双叉岭中的#R%s%s、%s%s、%s%s完成他们安排的任务。#Y(完成度：%s：%s)", NPC1, 完成情况[1], NPC2, 完成情况[2], NPC3, 完成情况[3], 任务数据[任务id].完成协助任务 or 0, 副本减负.黑风山[1] + 副本减负.黑风山[2] + 副本减负.黑风山[3])
				}
			elseif 进程 == 2 then
				任务数据[任务id].坐标 = {
					X = 44,
					Y = 21
				}
				说明 = {
					"黑风山",
					format("#超度大会开始了，要保护#G/玄奘#W/不受#R/鬼魂#W/的干扰！#Y(当前剩余：%s))", 任务数据[任务id].鬼魂)
				}
			elseif 进程 == 3 then
				任务数据[任务id].坐标 = {
					X = 56,
					Y = 88
				}
				NPC = 取NPC寻路信息(34480, "恶虎", 56, 88)
				说明 = {
					"黑风山",
					format("#W/山下突然出现一只%s#W/，抓紧前往收服，避免伤及无辜！", NPC)
				}
			elseif 进程 == 4 then
				NPC = 取NPC寻路信息(34480, "鬼鬼祟祟的黑熊精", 82, 9)
				任务数据[任务id].坐标 = {
					X = 82,
					Y = 9
				}
				说明 = {
					"黑风山",
					format("#W/你发现了一只%s,你偷偷的跟了上去在背后打他了个措手不及！", NPC)
				}
			elseif 进程 == 5 then
				任务数据[任务id].坐标 = {
					X = 44,
					Y = 69
				}
				说明 = {
					"黑风山",
					format("#来到了#G/观音寺#W/却发现观音寺内已经燃起了熊熊大火，抓紧去将火势扑灭。#Y(当前剩余：#R%s)", 任务数据[任务id].烈火)
				}
			elseif 进程 == 6 then
				任务数据[任务id].坐标 = {
					X = 183,
					Y = 27
				}
				说明 = {
					"黑风山",
					format("#终于将火势扑灭，混乱中#G/唐僧#W的袈裟精竟然丢失了，想起了那鬼鬼祟祟的黑熊精，你来到了#R/黑风山#W/寻找妖怪的痕迹，终于在右边山顶发现了3个形迹可疑的人。")
				}
			elseif 进程 == 7 then
				任务数据[任务id].坐标 = {
					X = 183,
					Y = 27
				}
				说明 = {
					"黑风山",
					format("#沿着山路一路收拾小妖。#Y(当前剩余：#R%s)", 任务数据[任务id].小妖)
				}
			elseif 进程 == 8 then
				任务数据[任务id].坐标 = {
					X = 34,
					Y = 32
				}
				NPC = 取NPC寻路信息(34483, "黑熊精", 34, 32)
				说明 = {
					"黑风山",
					format("#你来到了黑风洞内，%s#W/正观赏#G/袈裟#W/你上前便与他理论！", NPC)
				}
			end
		end
	elseif 任务数据[任务id].类型 == 34481 then
		NPC = 取NPC寻路信息(34480, "(" .. 任务数据[任务id].x .. "," .. 任务数据[任务id].y .. ")", 任务数据[任务id].x, 任务数据[任务id].y)
		说明 = {
			"黑风山",
			format("#帮助双叉岭的#R镇山太保刘伯钦#前往%s处附近除虫！", NPC)
		}
	elseif 任务数据[任务id].类型 == 34482 then
		NPC = 取NPC寻路信息(34480, "(" .. 任务数据[任务id].x .. "," .. 任务数据[任务id].y .. ")", 任务数据[任务id].x, 任务数据[任务id].y)
		说明 = {
			"黑风山",
			format("#帮助双叉岭的#R婆婆#前往#R%s#打扫！", NPC)
		}
	end

	return 说明
end

取消黑风山副本单位 = function(任务id)
	local 副本id = 任务数据[任务id].副本id
	local 删除地图 = {
		34480,
		34481,
		34482,
		34483
	}

	for n = 1, #删除地图 do
		local aa = 删除地图[n]

		for i, v in pairs(地图处理类.地图单位[aa]) do
			if 任务数据[地图处理类.地图单位[aa][i].id].副本id == 副本id then
				地图处理类:删除单位(aa, i)
			end
		end
	end
end

function 副本_黑风山:固定NPC对话内容(ID, 编号, 页数, 已经在任务中, 数字id, NPC模型, NPC名称)
	wb = {}
	xx = {}
	多段对话 = {}

	if ID == 34480 then
		if 编号 == 1 then
			wb[1] = "菩提本无树，明镜亦非台！少侠可以愿协助贫僧抄写佛法？"
		elseif 编号 == 2 then
			wb[1] = "肉多香啊，那和尚偏要吃斋，我娘叫我去摘采，我想先歇一会儿，少侠可否先帮我去菜园里除除虫？"
		elseif 编号 == 3 then
			wb[1] = "我、咳咳！老身腿脚不方便，小侠能否帮忙打扫房间好招待贵客？"
		end

		local 任务id = 玩家数据[数字id].角色:取任务(34480)

		if 任务id == 0 then
			return {
				NPC模型,
				NPC名称,
				wb[1],
				xx,
				多段对话
			}
		end

		local 副本id = 任务数据[任务id].副本id

		if 副本数据.黑风山.进行[副本id].进程 == 1 and 编号 <= 3 then
			xx = {
				"我来帮你吧",
				"请帮我取消任务",
				"我还要逛逛"
			}
		end

		return {
			NPC模型,
			NPC名称,
			wb[1],
			xx,
			多段对话
		}
	elseif ID == 34482 then
		wb[1] = "……"
		local 任务id = 玩家数据[数字id].角色:取任务(34480)

		if 任务id == 0 then
			return {
				NPC模型,
				NPC名称,
				wb[1],
				xx,
				多段对话
			}
		end

		local 副本id = 任务数据[任务id].副本id

		if 副本数据.黑风山.进行[副本id].进程 == 6 then
			多段对话 = {
				置快捷对话模版(快捷对话模版[数字id][1], "最近运气真好，马上快要过生日了，还捡到个漂亮的衣服。", nil, "黑汉", "男人_兰虎"),
				置快捷对话模版(快捷对话模版[数字id][1], "恭喜大哥，贺喜大哥，生日时一定要叫我参加。", nil, "道人", "男人_道士"),
				置快捷对话模版(快捷对话模版[数字id][1], "是什么漂亮衣服？", nil, "白衣秀士", "男人_书生"),
				置快捷对话模版(快捷对话模版[数字id][1], "今天没带在身，到时候你们看看就知道绝妙了。", nil, "黑汉", "男人_兰虎"),
				置快捷对话模版(快捷对话模版[数字id][2], "嗨，你们好！(这三人好奇怪，莫非妖怪？)"),
				置快捷对话模版(快捷对话模版[数字id][1], "你是什么人？！有什么企图？", {
					"看打！",
					"不打扰三位聊天，我闪了。"
				}, "黑汉", "男人_兰虎")
			}
		end

		return {
			NPC模型,
			NPC名称,
			wb[1],
			xx,
			多段对话
		}
	end
end

function 副本_黑风山:对话内容(数字id, 类型, 标识, 地图)
	local 对话数据 = {
		模型 = 任务数据[标识].模型,
		名称 = 任务数据[标识].名称,
		选项 = {}
	}
	local 副本id = 任务数据[标识].副本id
	local rwid = 副本数据.黑风山.进行[副本id].副本任务id

	if 任务数据[标识].战斗 then
		对话数据.对话 = "正在战斗中，请勿打扰。"

		return 对话数据
	end

	local 名称 = 任务数据[标识].名称

	if 对话数据.名称 == "吃菜虫" then
		local 对话列表 = {
			[1.0] = "看呐、这新鲜的大白菜！#80"
		}
		对话数据.对话 = 对话列表[ygsj(#对话列表)]
		对话数据.选项 = {
			"除掉它",
			"虫子？！我害怕啊！"
		}
	elseif 类型 == 34483 then
		对话数据.对话 = "……"
		对话数据.多段对话 = {
			置快捷对话模版(快捷对话模版[数字id][2], "嘿嘿，逮到你了！"),
			置快捷对话模版(快捷对话模版[数字id][1], "……", {
				"废话少说！开打！"
			})
		}
	elseif 类型 == 34484 then
		对话数据.对话 = "吼！！！#18"
		对话数据.多段对话 = {
			置快捷对话模版(快捷对话模版[数字id][2], "哇、这恶虎好凶！", {
				"欠打！休得伤人！",
				"好可怕、还是算了！"
			})
		}
	elseif 类型 == 34485 then
		对话数据.对话 = "这和尚身上的袈裟……#24"
		对话数据.多段对话 = {
			置快捷对话模版(快捷对话模版[数字id][1], "这可是件宝贝呀，宝贝袈裟……#80诶嘿嘿"),
			置快捷对话模版(快捷对话模版[数字id][2], "#0嗨！看够了没有？"),
			置快捷对话模版(快捷对话模版[数字id][1], "哇靠！你是谁？从哪里冒出来的？！", {
				"贼眉鼠脸一看就不是好人"
			})
		}
	elseif 类型 == 34486 then
		对话数据.对话 = "噼啪……噼啪……"
		对话数据.选项 = {
			"速速灭火",
			"好烫、躲远一点！"
		}
	elseif 类型 == 34487 then
		对话数据.对话 = "我只是个小喽啰、不要打我啊#47"
		对话数据.选项 = {
			"就打就打",
			"饶你一命"
		}
	elseif 类型 == 34488 then
		对话数据.对话 = "#80宝贝袈裟，我的我的！瞧瞧这做工、瞧瞧这质量！"
		对话数据.多段对话 = {
			置快捷对话模版(快捷对话模版[数字id][1], "这袈裟只有在我老黑手里才能妥善保管。那和尚何德何能拥有此等宝贝！诶嘿嘿#80"),
			置快捷对话模版(快捷对话模版[数字id][2], "#0嗨！看够了没有？"),
			置快捷对话模版(快捷对话模版[数字id][1], "哇靠？！又是你！"),
			置快捷对话模版(快捷对话模版[数字id][1], "藏得这么好都被你发现了？护卫、护卫！", {
				"把袈裟交出来！"
			})
		}
	end

	return 对话数据
end

function 副本_黑风山:对话处理(id, 数字id, 名称, 事件, 类型, rwid)
	local 地图编号 = 玩家数据[数字id].角色.数据.地图数据.编号

	if 事件 == "除掉它" then
		if 任务数据[rwid].战斗 ~= nil then
			常规提示(数字id, "#Y/对方正在战斗中")

			return
		end

		if 玩家数据[数字id].队伍 ~= 0 then
			常规提示(数字id, "#Y必须单人才能触发该活动")

			return
		end

		战斗准备类:创建战斗(id, 134480.1, rwid)
	elseif 事件 == "废话少说！开打！" then
		if 任务数据[rwid].战斗 ~= nil then
			常规提示(数字id, "#Y/对方正在战斗中")

			return
		end

		if 玩家数据[数字id].队伍 ~= 0 then
			常规提示(数字id, "#Y必须单人才能触发该活动")

			return
		end

		战斗准备类:创建战斗(id, 134480.3, rwid)
	elseif 事件 == "欠打！休得伤人！" then
		if 任务数据[rwid].战斗 ~= nil then
			常规提示(数字id, "#Y/对方正在战斗中")

			return
		end

		if 玩家数据[数字id].队伍 == 0 then
			常规提示(数字id, "#Y必须组队才能触发该活动")

			return
		end

		战斗准备类:创建战斗(id, 134480.4, rwid)
	elseif 事件 == "贼眉鼠脸一看就不是好人" then
		if 任务数据[rwid].战斗 ~= nil then
			常规提示(数字id, "#Y/对方正在战斗中")

			return
		end

		if 玩家数据[数字id].队伍 == 0 then
			常规提示(数字id, "#Y必须组队才能触发该活动")

			return
		end

		战斗准备类:创建战斗(id, 134480.5, rwid)
	elseif 事件 == "速速灭火" then
		if 任务数据[rwid].战斗 ~= nil then
			常规提示(数字id, "#Y/对方正在战斗中")

			return
		end

		if 玩家数据[数字id].队伍 == 0 then
			常规提示(数字id, "#Y必须组队才能触发该活动")

			return
		end

		战斗准备类:创建战斗(id, 134480.6, rwid)
	elseif 事件 == "看打！" then
		if 玩家数据[数字id].队伍 == 0 then
			常规提示(数字id, "#Y必须组队才能触发该活动")

			return
		end

		战斗准备类:创建战斗(id, 134480.7, rwid)
	elseif 事件 == "就打就打" then
		if 玩家数据[数字id].队伍 == 0 then
			常规提示(数字id, "#Y必须组队才能触发该活动")

			return
		end

		战斗准备类:创建战斗(id, 134480.8, rwid)
	elseif 事件 == "把袈裟交出来！" then
		if 玩家数据[数字id].队伍 == 0 then
			常规提示(数字id, "#Y必须组队才能触发该活动")

			return
		end

		战斗准备类:创建战斗(id, 134480.9, rwid)
	elseif 地图编号 == 34480 then
		local 任务id = 玩家数据[数字id].角色:取任务(34480)

		if 任务id == 0 then
			return
		end

		local 副本id = 任务数据[任务id].副本id

		if 副本数据.黑风山.进行[副本id].进程 == 1 then
			if 名称 == "玄奘" then
				if 事件 == "我来帮你吧" then
					self:抄写佛经(数字id)
				end
			elseif 名称 == "镇山太保刘伯钦" then
				if 事件 == "我来帮你吧" then
					self:太保任务(数字id)
				elseif 事件 == "请帮我取消任务" then
					if 玩家数据[数字id].角色:取任务(34481) == 0 then
						添加最后对话(数字id, "你没有领取过这样的任务啊。")

						return
					else
						玩家数据[数字id].角色:取消任务(玩家数据[数字id].角色:取任务(34481))
						添加最后对话(数字id, "已经帮你取消了此任务。")

						return
					end
				end
			elseif 名称 == "婆婆" then
				if 事件 == "我来帮你吧" then
					self:打扫任务(数字id)
				elseif 事件 == "请帮我取消任务" then
					if 玩家数据[数字id].角色:取任务(34482) == 0 then
						添加最后对话(数字id, "你没有领取过这样的任务啊。")

						return
					else
						玩家数据[数字id].角色:取消任务(玩家数据[数字id].角色:取任务(34482))
						添加最后对话(数字id, "已经帮你取消了此任务。")

						return
					end
				end
			end
		end
	end
end

function 副本_黑风山:完成打扫任务(id)
	local rwid = 玩家数据[id].角色:取任务(34480)

	扣除道具(id, "蒲扇", 1, 1)

	local 副本id = 任务数据[rwid].副本id

	if 任务数据[rwid].协助任务.婆婆 > 0 then
		任务数据[rwid].协助任务.婆婆 = 任务数据[rwid].协助任务.婆婆 - 1
		任务数据[rwid].完成协助任务 = (任务数据[rwid].完成协助任务 or 0) + 1

		if 任务数据[rwid].协助任务.婆婆 <= 0 then
			取消队伍任务(rwid, 34482)
		else
			玩家数据[id].角色:取消任务(玩家数据[id].角色:取任务(34482))
		end

		local 通过 = true

		for k, v in pairs(任务数据[rwid].协助任务) do
			if v > 0 then
				通过 = false

				break
			end
		end

		if 通过 then
			副本数据.黑风山.进行[副本id].进程 = 2

			设置黑风山副本(副本id)
		end

		刷新队伍任务跟踪(rwid)
		通用给奖励(id, {
			活跃度 = 1,
			经验 = {
				250,
				350
			},
			银子 = {
				100,
				150
			},
			储备 = {
				150,
				200
			}
		}, "黑风山1", nil, 1)
	end
end

function 副本_黑风山:战斗胜利处理(战斗类型, 进入战斗玩家id, 任务id)
	local rwid = 玩家数据[进入战斗玩家id].角色:取任务(34480)
	local 副本id = 任务数据[rwid].副本id

	if 战斗类型 == 100147 then
	elseif 战斗类型 == 134480.1 then
		if 任务数据[rwid].协助任务.镇山太保 > 0 then
			任务数据[rwid].协助任务.镇山太保 = 任务数据[rwid].协助任务.镇山太保 - 1
			任务数据[rwid].完成协助任务 = (任务数据[rwid].完成协助任务 or 0) + 1

			if 任务数据[rwid].协助任务.镇山太保 <= 0 then
				取消队伍任务(rwid, 34481)
			else
				玩家数据[进入战斗玩家id].角色:取消任务(玩家数据[进入战斗玩家id].角色:取任务(34481))
			end

			local 通过 = true

			for k, v in pairs(任务数据[rwid].协助任务) do
				if v > 0 then
					通过 = false

					break
				end
			end

			if 通过 then
				副本数据.黑风山.进行[副本id].进程 = 2

				设置黑风山副本(副本id)
			end

			刷新队伍任务跟踪(rwid)
			通用给奖励(进入战斗玩家id, {
				活跃度 = 1,
				经验 = {
					250,
					350
				},
				银子 = {
					100,
					150
				},
				储备 = {
					150,
					200
				}
			}, "黑风山1", nil, 1)
		end

		地图处理类:删除单位(任务数据[任务id].地图编号, 任务数据[任务id].单位编号)

		任务数据[任务id] = nil
	elseif 战斗类型 == 134480.2 then
		黑风山:完成打扫任务(进入战斗玩家id)
	elseif 战斗类型 == 134480.3 then
		if 任务数据[rwid].鬼魂 > 0 then
			任务数据[rwid].鬼魂 = 任务数据[rwid].鬼魂 - 1

			if 任务数据[rwid].鬼魂 <= 0 then
				副本数据.黑风山.进行[副本id].进程 = 3

				设置黑风山副本(副本id)
			end

			刷新队伍任务跟踪(rwid)
			通用给奖励(进入战斗玩家id, {
				活跃度 = 1,
				经验 = {
					250,
					350
				},
				银子 = {
					100,
					150
				},
				储备 = {
					150,
					200
				}
			}, "黑风山1", nil, 1)
		end

		地图处理类:删除单位(任务数据[任务id].地图编号, 任务数据[任务id].单位编号)

		任务数据[任务id] = nil
	elseif 战斗类型 == 134480.4 then
		副本数据.黑风山.进行[副本id].进程 = 4

		设置黑风山副本(副本id)
		刷新队伍任务跟踪(rwid)

		for i = 1, #队伍数据[玩家数据[进入战斗玩家id].队伍].成员数据 do
			if 队伍处理类:取是否助战(玩家数据[进入战斗玩家id].队伍, i) == 0 then
				local id = 队伍数据[玩家数据[进入战斗玩家id].队伍].成员数据[i]
				玩家数据[id].战斗 = 0

				通用给奖励(id, {
					活跃度 = 1,
					经验 = {
						1000,
						1200
					},
					银子 = {
						400,
						500
					},
					储备 = {
						250,
						300
					}
				}, "黑风山2")
			end
		end

		地图处理类:删除单位(任务数据[任务id].地图编号, 任务数据[任务id].单位编号)

		任务数据[任务id] = nil
	elseif 战斗类型 == 134480.5 then
		副本数据.黑风山.进行[副本id].进程 = 5

		设置黑风山副本(副本id)
		刷新队伍任务跟踪(rwid)

		for i = 1, #队伍数据[玩家数据[进入战斗玩家id].队伍].成员数据 do
			if 队伍处理类:取是否助战(玩家数据[进入战斗玩家id].队伍, i) == 0 then
				local id = 队伍数据[玩家数据[进入战斗玩家id].队伍].成员数据[i]
				玩家数据[id].战斗 = 0

				通用给奖励(id, {
					活跃度 = 1,
					经验 = {
						1000,
						1200
					},
					银子 = {
						400,
						500
					},
					储备 = {
						250,
						300
					}
				}, "黑风山2")
			end
		end

		地图处理类:删除单位(任务数据[任务id].地图编号, 任务数据[任务id].单位编号)

		任务数据[任务id] = nil

		地图处理类:跳转地图(进入战斗玩家id, 34481, 44, 69)
	elseif 战斗类型 == 134480.6 then
		if 任务数据[rwid].烈火 > 0 then
			任务数据[rwid].烈火 = 任务数据[rwid].烈火 - 1

			for i = 1, #队伍数据[玩家数据[进入战斗玩家id].队伍].成员数据 do
				if 队伍处理类:取是否助战(玩家数据[进入战斗玩家id].队伍, i) == 0 then
					local id = 队伍数据[玩家数据[进入战斗玩家id].队伍].成员数据[i]
					玩家数据[id].战斗 = 0

					通用给奖励(id, {
						活跃度 = 1,
						经验 = {
							700,
							900
						},
						银子 = {
							250,
							300
						},
						储备 = {
							100,
							150
						}
					}, "黑风山1", nil, 1)
				end
			end
		end

		if 任务数据[rwid].烈火 <= 0 then
			副本数据.黑风山.进行[副本id].进程 = 6

			设置黑风山副本(副本id)
			地图处理类:跳转地图(进入战斗玩家id, 34482, 180, 44)
		end

		刷新队伍任务跟踪(rwid)
		地图处理类:删除单位(任务数据[任务id].地图编号, 任务数据[任务id].单位编号)

		任务数据[任务id] = nil
	elseif 战斗类型 == 134480.7 then
		副本数据.黑风山.进行[副本id].进程 = 7

		设置黑风山副本(副本id)
		刷新队伍任务跟踪(rwid)

		for i = 1, #队伍数据[玩家数据[进入战斗玩家id].队伍].成员数据 do
			if 队伍处理类:取是否助战(玩家数据[进入战斗玩家id].队伍, i) == 0 then
				local id = 队伍数据[玩家数据[进入战斗玩家id].队伍].成员数据[i]
				玩家数据[id].战斗 = 0

				通用给奖励(id, {
					活跃度 = 1,
					经验 = {
						1200,
						1400
					},
					银子 = {
						550,
						600
					},
					储备 = {
						250,
						300
					}
				}, "黑风山2")
			end
		end
	elseif 战斗类型 == 134480.8 then
		if 任务数据[rwid].小妖 > 0 then
			任务数据[rwid].小妖 = 任务数据[rwid].小妖 - 1

			for i = 1, #队伍数据[玩家数据[进入战斗玩家id].队伍].成员数据 do
				if 队伍处理类:取是否助战(玩家数据[进入战斗玩家id].队伍, i) == 0 then
					local id = 队伍数据[玩家数据[进入战斗玩家id].队伍].成员数据[i]
					玩家数据[id].战斗 = 0

					通用给奖励(id, {
						活跃度 = 1,
						经验 = {
							700,
							900
						},
						银子 = {
							250,
							300
						},
						储备 = {
							100,
							150
						}
					}, "黑风山1", nil, 1)
				end
			end
		end

		if 任务数据[rwid].小妖 <= 0 then
			副本数据.黑风山.进行[副本id].进程 = 8

			设置黑风山副本(副本id)
			地图处理类:跳转地图(进入战斗玩家id, 34483, 100, 80)
		end

		刷新队伍任务跟踪(rwid)
		地图处理类:删除单位(任务数据[任务id].地图编号, 任务数据[任务id].单位编号)

		任务数据[任务id] = nil
	elseif 战斗类型 == 134480.9 then
		local rwid = 玩家数据[进入战斗玩家id].角色:取任务(34480)

		if rwid ~= 0 then
			for n = 1, #队伍数据[玩家数据[进入战斗玩家id].队伍].成员数据 do
				if 队伍处理类:取是否助战(玩家数据[进入战斗玩家id].队伍, n) == 0 then
					local id = 队伍数据[玩家数据[进入战斗玩家id].队伍].成员数据[n]

					通用给奖励(id, {
						活跃度 = 10,
						副本积分 = 20,
						经验 = {
							3000,
							4000
						},
						银子 = {
							1500,
							2000
						},
						储备 = {
							1000,
							1500
						}
					}, "黑风山")

					玩家数据[id].战斗 = 0

					玩家数据[id].角色:取消任务(rwid)

					副本数据.黑风山.完成[id] = true
				end
			end

			地图处理类:删除单位(任务数据[任务id].地图编号, 任务数据[任务id].单位编号)

			任务数据[任务id] = nil
			local fbid = 任务数据[rwid].副本id

			取消黑风山副本单位(rwid)
			地图处理类:跳转地图(进入战斗玩家id, 1001, 205, 120)

			副本数据.黑风山.进行[fbid] = nil
			任务数据[rwid] = nil
		end
	end
end

开启黑风山副本 = function(id)
	if 副本减负.黑风山开启 == false then
		常规提示(id, "#Y该副本还未修复好、请等待更新。")

		return
	end

	if 玩家数据[id].队伍 == 0 or 玩家数据[id].队长 == false then
		常规提示(id, "#Y/该任务必须组队完成且由队长领取")

		return
	elseif 取队伍人数(id) < 3 then
		常规提示(id, "#Y此副本要求队伍人数不低于3人")

		return
	elseif 取等级要求(id, 60) == false then
		常规提示(id, "#Y此副本要求角色等级不能低于60级")

		return
	end

	local 队伍id = 玩家数据[id].队伍

	for n = 1, #队伍数据[队伍id].成员数据 do
		local 临时id = 队伍数据[队伍id].成员数据[n]

		if 副本数据.黑风山.完成[临时id] ~= nil then
			常规提示(临时id, "#P" .. 玩家数据[临时id].角色.数据.名称 .. "#Y本日已经完成过此副本了")

			return
		elseif 玩家数据[临时id].角色:取任务(34480) ~= 0 then
			常规提示(临时id, "#Y" .. 玩家数据[临时id].角色.数据.名称 .. "正在进行副本任务，无法领取新的副本")

			return
		end
	end

	local 任务id = id .. "_34480_" .. os.time() .. "_" .. 随机序列 .. "_" .. 取随机数(88, 99999999)
	任务数据[任务id] = {
		类型 = 34480,
		结束 = 7200,
		id = 任务id,
		起始 = os.time(),
		玩家id = {},
		队伍组 = {},
		副本id = id
	}
	副本数据.黑风山.进行[id] = {
		进程 = 1,
		副本任务id = 任务id
	}
	local 队伍id = 玩家数据[id].队伍

	for n = 1, #队伍数据[队伍id].成员数据 do
		if 队伍处理类:取是否助战(玩家数据[id].队伍, n) == 0 then
			任务数据[任务id].队伍组[#任务数据[任务id].队伍组 + 1] = 队伍数据[队伍id].成员数据[n]
		end
	end

	设置黑风山副本(id)

	for n = 1, #队伍数据[队伍id].成员数据 do
		if 队伍处理类:取是否助战(玩家数据[id].队伍, n) == 0 then
			local 临时id = 队伍数据[队伍id].成员数据[n]

			玩家数据[临时id].角色:添加任务(任务id)
			常规提示(临时id, "#Y你开启了黑风山副本")
			地图处理类:跳转地图(临时id, 副本传送坐标[副本名称[id]][1], 副本传送坐标[副本名称[id]][2], 副本传送坐标[副本名称[id]][3])
			添加最后对话(临时id, 副本序言[副本名称[id]])
		end
	end
end

设置黑风山副本 = function(id)
	local 地图 = 0
	local x坐标 = 0
	local y坐标 = 0
	local 方向 = 0

	if 副本数据.黑风山.进行[id] == nil then
		return
	end

	if 副本数据.黑风山.进行[id].副本任务id == nil then
		常规提示(id, "#Y副本任务失败！")

		return
	end

	local fbid = 副本数据.黑风山.进行[id].副本任务id

	if 副本数据.黑风山.进行[id].进程 == 1 then
		地图 = 34480
		任务数据[fbid].协助任务 = {
			镇山太保 = 副本减负.黑风山[2],
			婆婆 = 副本减负.黑风山[3],
			玄奘 = 副本减负.黑风山[1]
		}
	elseif 副本数据.黑风山.进行[id].进程 == 2 then
		任务数据[fbid].鬼魂 = 副本减负.黑风山[4] + 0
		地图 = 34480
		local 随机名称 = {
			"绝望的牛头",
			"懵懂的僵尸",
			"吊死的鬼魂",
			"奇怪的马面"
		}
		local 随机模型 = {
			"牛头",
			"僵尸",
			"野鬼",
			"马面"
		}

		for i = 1, 副本减负.黑风山[4] do
			任务id = id .. "_34483_" .. os.time() .. "_" .. 随机序列 .. "_" .. 取随机数(1, 9999) .. i
			local sj = 取随机数(1, #随机名称)
			local xy = 地图处理类.地图坐标[地图]:取随机点()
			任务数据[任务id] = {
				结束 = 1200,
				行走开关 = true,
				事件 = "明雷活动",
				类型 = 34483,
				id = 任务id,
				起始 = os.time(),
				玩家id = id,
				队伍组 = {},
				名称 = 随机名称[sj],
				模型 = 随机模型[sj],
				x = xy.x,
				y = xy.y,
				方向 = 方向,
				副本id = id,
				地图编号 = 地图,
				地图名称 = 取地图名称(地图)
			}

			地图处理类:添加单位(任务id)
		end
	elseif 副本数据.黑风山.进行[id].进程 == 3 then
		地图 = 34480
		任务id = id .. "_34484_" .. os.time() .. "_" .. 随机序列 .. "_" .. 取随机数(88, 99999999)
		任务数据[任务id] = {
			y = 88,
			行走开关 = true,
			变异 = true,
			名称 = "吊青白额虎",
			结束 = 1200,
			方向 = 1,
			事件 = "明雷活动",
			类型 = 34484,
			模型 = "噬天虎",
			x = 56,
			id = 任务id,
			起始 = os.time(),
			玩家id = id,
			队伍组 = {},
			副本id = id,
			地图编号 = 地图,
			地图名称 = 取地图名称(地图)
		}

		地图处理类:添加单位(任务id)
	elseif 副本数据.黑风山.进行[id].进程 == 4 then
		地图 = 34480
		任务id = id .. "_34485_" .. os.time() .. "_" .. 随机序列 .. "_" .. 取随机数(88, 99999999)
		任务数据[任务id] = {
			y = 9,
			行走开关 = true,
			变异 = true,
			名称 = "鬼鬼祟祟的黑熊精",
			结束 = 1200,
			方向 = 1,
			事件 = "明雷活动",
			类型 = 34485,
			模型 = "黑熊精",
			x = 82,
			id = 任务id,
			起始 = os.time(),
			玩家id = id,
			队伍组 = {},
			副本id = id,
			地图编号 = 地图,
			地图名称 = 取地图名称(地图)
		}

		地图处理类:添加单位(任务id)
	elseif 副本数据.黑风山.进行[id].进程 == 5 then
		任务数据[fbid].烈火 = 副本减负.黑风山[5]
		地图 = 34481

		for i = 1, 副本减负.黑风山[5] do
			任务id = id .. "_34486_" .. os.time() .. "_" .. 随机序列 .. "_" .. 取随机数(1, 9999) .. i
			local xy = 地图处理类.地图坐标[地图]:取随机点()
			任务数据[任务id] = {
				名称 = "熊熊烈火",
				行走开关 = true,
				结束 = 1200,
				模型 = "炎魔神",
				类型 = 34486,
				id = 任务id,
				起始 = os.time(),
				玩家id = id,
				队伍组 = {},
				x = xy.x,
				y = xy.y,
				方向 = 方向,
				副本id = id,
				地图编号 = 地图,
				地图名称 = 取地图名称(地图)
			}

			地图处理类:添加单位(任务id)
		end
	elseif 副本数据.黑风山.进行[id].进程 == 6 then
		地图 = 34482
	elseif 副本数据.黑风山.进行[id].进程 == 7 then
		地图 = 34482
		任务数据[fbid].小妖 = 副本减负.黑风山[6]
		local xy = 地图处理类.地图坐标[地图]:取随机点()
		随机名称 = {
			"送信小妖",
			"巡山小妖",
			"小妖队长"
		}
		随机模型 = {
			"锦毛貂精",
			"锦毛貂精",
			"锦毛貂精"
		}

		for i = 1, 副本减负.黑风山[6] do
			local xy = 地图处理类.地图坐标[地图]:取随机点()
			任务id = id .. "_34487_" .. os.time() .. "_" .. 随机序列 .. "_" .. 取随机数(88, 99999999) .. i
			local aa = ygsj(#随机名称)
			任务数据[任务id] = {
				行走开关 = true,
				方向 = 0,
				结束 = 1200,
				类型 = 34487,
				id = 任务id,
				起始 = os.time(),
				玩家id = id,
				队伍组 = {},
				名称 = 随机名称[aa],
				模型 = 随机模型[aa],
				x = xy.x,
				y = xy.y,
				副本id = id,
				地图编号 = 地图,
				地图名称 = 取地图名称(地图)
			}

			地图处理类:添加单位(任务id)
		end
	elseif 副本数据.黑风山.进行[id].进程 == 8 then
		地图 = 34483
		任务id = id .. "_34488_" .. os.time() .. "_" .. 随机序列 .. "_" .. 取随机数(88, 99999999)
		任务数据[任务id] = {
			名称 = "黑熊精",
			y = 32,
			方向 = 0,
			变异 = true,
			结束 = 7200,
			x = 34,
			事件 = "明雷活动",
			模型 = "黑熊精",
			类型 = 34488,
			id = 任务id,
			起始 = os.time(),
			玩家id = id,
			队伍组 = {},
			副本id = id,
			地图编号 = 地图,
			地图名称 = 取地图名称(地图)
		}

		地图处理类:添加单位(任务id)
	end

	任务数据[副本数据.黑风山.进行[id].副本任务id].地图编号 = 地图 + 0
end

function 副本_黑风山:太保任务(id)
	local 副本id = 玩家数据[id].角色:取任务(34480)

	if 任务数据[副本id].协助任务.镇山太保 < 1 then
		添加最后对话(id, "我这里已经没有任务给你了，到其他人那里看看吧！")

		return
	elseif 玩家数据[id].角色:取任务(34481) ~= 0 then
		添加最后对话(id, "少侠身上已经任务，请先完成任务再来！")

		return
	elseif 玩家数据[id].队伍 ~= 0 then
		添加最后对话(id, "组队状态下无法接任务！")

		return
	end

	local 地图 = 34480
	local xy = 地图处理类.地图坐标[地图]:取随机点()
	local 任务id = "_34481_" .. os.time() .. "_" .. 取随机数(1, 9999)
	任务数据[任务id] = {
		名称 = "吃菜虫",
		变异 = true,
		结束 = 999999,
		事件 = "明雷",
		模型 = "海毛虫",
		类型 = 34481,
		id = 任务id,
		起始 = os.time(),
		玩家id = id,
		队伍组 = {},
		x = xy.x,
		y = xy.y,
		方向 = 方向,
		副本id = 任务数据[副本id].副本id,
		地图编号 = 地图,
		地图名称 = 取地图名称(地图)
	}

	地图处理类:添加单位(任务id)
	玩家数据[id].角色:添加任务(任务id)
	添加最后对话(id, format("那就劳烦少侠前往双叉岭#Y(%s,%s)#附近处除虫吧！", 任务数据[任务id].x, 任务数据[任务id].y))
end

function 副本_黑风山:回调佛经(id, 内容)
	if 玩家数据[id].佛经 == nil then
		return
	end

	local rwid = 玩家数据[id].角色:取任务(34480)
	local 副本id = 任务数据[rwid].副本id

	if 玩家数据[id].佛经 == 内容.文本 then
		if 副本数据.黑风山.进行[副本id].进程 == 1 and 任务数据[rwid].协助任务.玄奘 > 0 then
			任务数据[rwid].协助任务.玄奘 = 任务数据[rwid].协助任务.玄奘 - 1
			任务数据[rwid].完成协助任务 = (任务数据[rwid].完成协助任务 or 0) + 1

			通用给奖励(id, {
				活跃度 = 1,
				经验 = {
					250,
					350
				},
				银子 = {
					100,
					150
				},
				储备 = {
					150,
					200
				}
			}, "黑风山1")
		end

		local 通过 = true

		for k, v in pairs(任务数据[rwid].协助任务) do
			if v > 0 then
				通过 = false

				break
			end
		end

		if 通过 then
			副本数据.黑风山.进行[副本id].进程 = 2

			设置黑风山副本(副本id)
		end

		刷新队伍任务跟踪(rwid)
		添加最后对话(id, "多谢少侠的帮助！")
	else
		添加最后对话(id, "善哉善哉，少侠抄写的佛经有误，请少侠持有一颗礼佛之心再行尝试。")
	end
end

function 副本_黑风山:抄写佛经(id)
	local 副本id = 玩家数据[id].角色:取任务(34480)
	local 佛经列表 = {
		"诸法因缘生我说是因缘因缘尽故灭我作如是说",
		"若菩萨欲得净土当净其心随其心净则佛土净",
		"法尚应舍何况非法",
		"无我相无人相无众生相无寿者相",
		"应无所住而生其心",
		"此有故彼有此生故彼生此无故彼无此灭故彼灭",
		"一切贤圣皆以无为法而有差别",
		"凡所有相皆是虚妄若见诸相非相则见如来",
		"一切法皆是佛法",
		"善能分别诸法相于第一义而不动",
		"诸可还者自然非汝不汝还者非汝而谁",
		"若以色见我以音声求我是人行邪道不能见如来",
		"一切有为法如梦幻泡影如露亦如电应作如是观",
		"一切行无常生者必有尽不生则不死此灭最为乐",
		"过去心不可得现在心不可得未来心不可得"
	}

	if 任务数据[副本id].协助任务.玄奘 < 1 then
		添加最后对话(id, "经文已经足够用了！贫僧这里已经没有任务给少侠了，到其他人那里看看吧！")

		return
	end

	玩家数据[id].佛经 = 佛经列表[ygsj(#佛经列表)]

	发送数据(玩家数据[id].连接id, 64.4, {
		佛经 = 玩家数据[id].佛经
	})
end

function 副本_黑风山:打扫任务(id)
	local 副本id = 玩家数据[id].角色:取任务(34480)

	if 任务数据[副本id].协助任务.婆婆 < 1 then
		添加最后对话(id, "我这里已经没有任务给你了，到其他人那里看看吧！")

		return
	elseif 玩家数据[id].角色:取任务(34482) ~= 0 then
		添加最后对话(id, "少侠身上已经任务，请先完成任务再来！")

		return
	elseif 玩家数据[id].队伍 ~= 0 then
		添加最后对话(id, "组队状态下无法接任务！")

		return
	end

	local 地图 = 34480
	local xy = 地图处理类.地图坐标[地图]:取随机点()
	local 任务id = "_34482_" .. os.time() .. "_" .. 取随机数(1, 9999)
	任务数据[任务id] = {
		类型 = 34482,
		结束 = 600,
		id = 任务id,
		起始 = os.time(),
		x = xy.x,
		y = xy.y,
		玩家id = id,
		队伍组 = {},
		副本id = 任务数据[副本id].副本id
	}

	玩家数据[id].角色:添加任务(任务id)
	添加最后对话(id, format("烦请少侠前往双叉岭#Y(%s,%s)#附近处打扫！", 任务数据[任务id].x, 任务数据[任务id].y))

	获取道具模式[id] = 1

	快捷给道具(id, "蒲扇")

	获取道具模式[id] = nil
end

return 副本_黑风山
